{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ALD Classification -\n",
    "Anthony DiBenedetto\n",
    "\n",
    "This program uses Nearest Neighbor (nn) to classify the ALD data. The accuracy of the classification is caculated and printed out in on the of the bottom cells. Also shown is a confusion matrix of the classification to show the accuracy of the classification. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import Libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the training and test data\n",
    "training_data = (np.load('ALD_Classification_dataset/training_data.npy'))\n",
    "training_labels = (np.load('ALD_Classification_dataset/training_labels.npy'))\n",
    "\n",
    "testing_data = (np.load('ALD_Classification_dataset/testing_data.npy'))\n",
    "testing_labels = (np.load('ALD_Classification_dataset/testing_labels.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = training_data\n",
    "y_train = training_labels\n",
    "\n",
    "\n",
    "X_test = testing_data\n",
    "y_test = testing_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier(n_neighbors=3, weights=&#x27;distance&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier(n_neighbors=3, weights=&#x27;distance&#x27;)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=3, weights='distance')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Initialize the nearest neighbor classifier and fit the model with the training data\n",
    "knn = KNeighborsClassifier(n_neighbors=3, weights='distance', algorithm='auto',  leaf_size=30)\n",
    "knn.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use the model to predict 0 or 1 from the X_test\n",
    "y_pred = knn.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy: 98.50%\n",
      "Confusion matrix:\n",
      " [[611   8]\n",
      " [  7 374]]\n"
     ]
    }
   ],
   "source": [
    "# Generate the accuracy from the predicted y values (y_pred) and y_test \n",
    "accuracy = accuracy_score(y_test, y_pred)\n",
    "print(\"Accuracy: {:.2f}%\".format(accuracy*100))\n",
    "\n",
    "# Generate the confusion matrix from predicted y values (y_pred) and y_test \n",
    "cm = confusion_matrix(y_test, y_pred)\n",
    "print(\"Confusion matrix:\\n\", cm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Use seaborn package to make the confusion matrix look nice, as well as normilize the confusion matrix\n",
    "import seaborn as sns\n",
    "cm_normalized = np.round(cm/np.sum(cm, axis=1).reshape(-1, 1), 2) \n",
    "sns.heatmap(cm_normalized, cmap=\"Blues\", annot=True)\n",
    "plt.xlabel(\"Predicted Label\")\n",
    "plt.ylabel(\"Actual Label\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "\n",
    "# Reduce dataset dimensions to 2D using PCA\n",
    "pca = PCA(n_components=2)\n",
    "X_train_2D = pca.fit_transform(X_train)\n",
    "X_test_2D = pca.transform(X_test)\n",
    "\n",
    "# Train SVM classifier\n",
    "classifier = KNeighborsClassifier(n_neighbors=3, weights='distance', algorithm='auto',  leaf_size=30)\n",
    "classifier.fit(X_train_2D, y_train)\n",
    "\n",
    "# Create a meshgrid\n",
    "h = 0.02  # step size in the mesh\n",
    "x_min, x_max = X_train_2D[:, 0].min() - 1, X_train_2D[:, 0].max() + 1\n",
    "y_min, y_max = X_train_2D[:, 1].min() - 1, X_train_2D[:, 1].max() + 1\n",
    "xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
    "\n",
    "# Plot decision boundaries\n",
    "Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "Z = Z.reshape(xx.shape)\n",
    "plt.contourf(xx, yy, Z, alpha=0.8)\n",
    "plt.scatter(X_train_2D[:, 0], X_train_2D[:, 1], c=y_train, edgecolors='k', marker='o', label='Training Data')\n",
    "plt.scatter(X_test_2D[:, 0], X_test_2D[:, 1], c=y_test, edgecolors='k', marker='s', label='Testing Data')\n",
    "plt.xlabel('Feature 1')\n",
    "plt.ylabel('Feature 2')\n",
    "plt.title('KNC Decision Boundary')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "11f5c4aeecadc3e88c152309abda6ed29843603433e3c3abe7ec8b133e6a3d72"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
